The invention disclosed herein relates generally to data storage systems in computer networks and, more particularly, to improvements to storage systems which provide dynamic reallocation of storage device control.
There are many different computing architectures for storing electronic data. Individual computers typically store electronic data in volatile storage devices such as Random Access Memory (RAM) and one or more nonvolatile storage devices such as hard drives, tape drives, or optical disks, that form a part of or are directly connectable to the individual computer. In a network of computers such as a Local Area Network (LAN) or a Wide Area Network (WAN), storage of electronic data is typically accomplished via servers or stand-alone storage devices accessible via the network. These individual network storage devices may be networkable tape drives, optical libraries, Redundant Arrays of Inexpensive Disks (RAID), CD-ROM jukeboxes, and other devices. Common architectures include drive pools which serve as logical collections of storage drives with associated media groups which are the tapes or other storage media used by a given drive pool.
Stand-alone storage devices are connected to individual computers or a network of computers via serial, parallel, Small Computer System Interface (SCSI), or other cables. Each individual computer on the network controls the storage devices that are physically attached to that computer and may also access the storage devices of the other network computers to perform backups, transaction processing, file sharing, and other storage-related applications.
Network Attached Storage (NAS) is another storage architecture using stand-alone storage devices in a LAN or other such network. In NAS, a storage controller computer owns or controls a particular stand-alone storage device to the exclusion of other computers on the network, but the SCSI or other cabling directly connecting that storage device to the individual controller or owner computer is eliminated. Instead, storage devices are directly attached to the network itself.
A common feature shared by many or all existing network architectures is the static relationship between storage controller computers and storage devices. In existing network architectures, storage devices can each only be connected, virtually or physically, to a single storage controller computer. Only the storage controller computer to which a particular device is physically connected has read/write access to that device. A drive pool and its associated media group, for example, can only be controlled by the computer to which it is directly connected. Therefore, all backup from other storage controller computers needs to be sent via the network before it can be stored on the storage device connected to the first storage controller computer.
One problem associated with these storage architectures relates to overloading network traffic during certain operations associated with use of storage devices on the network. Network cables have a limited amount of bandwidth that must be shared among all the computers on the network. The capacity of most LAN or network cabling is measured in megabits per second (mbps), with 10 mbps and 100 mbps currently being standard. During common operations such as system backups, transaction processing, file copies, and other similar operations, network traffic often becomes overloaded as hundreds of megabytes (MB) and gigabytes (GB) of information are sent over the network to the associated storage devices. The capacity of the network computers to stream data over the network to the associated storage devices in this manner is greater than the bandwidth capacity of the cabling itself, thus substantially slowing ordinary network and storage activity and communications.
A Storage Area Network (SAN) is a network architecture designed to facilitate transport of electronic data and address this bandwidth issue. SAN architecture requires at least two networks. First, a traditional network described above such as a LAN transports ordinary traffic between networked computers. A SAN serves as a second network that is attached to the servers of the first network. The SAN is generally a separate network reserved for bandwidth-intensive operations such as backups, transaction processing, and the like. The cabling used in the SAN is usually of much higher bandwidth capacity than that used in the first network such as the LAN, and the communication protocols used over the SAN cabling are optimized for bandwidth-intensive traffic. The storage devices used by the networked computers for the bandwidth-intensive operations are attached to the SAN rather than the LAN. Thus, when the bandwidth-intensive operations are required, they take place over the SAN and the LAN remains unaffected.
Even with a SAN, however, the static relationship between individual storage controller computers and individual storage devices or drive pools causes bandwidth difficulties during data storage or retrieval operations. Under the current architectures, when a storage device is assigned to a storage controller computer, that storage controller computer owns and controls the device indefinitely and to the exclusion of other computers on the network. Thus, one computer on a network cannot control the drive pool and media group being controlled by another, and requests to store and retrieve data from such a drive pool and media group would have to first pass through the controlling computer. This relationship between storage controller computer and storage device continues to lead to bandwidth difficulties.
In addition, the current architectures result in inefficient use of resources and the need for extra storage devices or pools beyond the actual storage needs of the network. As an illustrative example, if each storage controller computer needs access to two storage devices and there are five storage controller computers in the network, then a total of ten storage devices will be required. The actual amount of work each of the ten storage devices performs might be much less than the workload capacity of each storage device.
There is thus a need for a method and system which addresses this inefficiency and the associated continued bandwidth problems.